package jscontrol

import (
	"MqttCloudProtocolServer/ProtocolServer/scriptmanager/modulelib"
	"errors"

	"github.com/dop251/goja"
)

//CreateHisDBModule CreateHisDBModule
func CreateHisDBModule(runtime *goja.Runtime) *goja.Object {
	return nil
}

//HisDBModule HisDBModule
type HisDBModule struct {
	hisdbOperator *modulelib.HisDBOperator
	jsTimer       *goja.Object
	runtime       *goja.Runtime
}

func (_this *HisDBModule) read(call goja.FunctionCall) goja.Value {
	if len(call.Arguments) < 1 {
		return GetFromResAndErr(false, errors.New("参数长度错误"), _this.runtime)
	}
	tag, err := GetStringFromArgument(call.Argument(0))
	if err != nil {
		return GetFromResAndErr(false, err, _this.runtime)
	}
	time, value := _this.hisdbOperator.Read(tag)
	object := _this.runtime.NewObject()
	object.Set("time", time)
	object.Set("value", value)
	return object
}
func (_this *HisDBModule) write(call goja.FunctionCall) goja.Value {
	if len(call.Arguments) < 3 {
		return GetFromResAndErr(false, errors.New("参数长度错误"), _this.runtime)
	}
	tag, err := GetStringFromArgument(call.Argument(0))
	if err != nil {
		return GetFromResAndErr(false, err, _this.runtime)
	}
	value, err := GetInterfaceFromArgument(call.Argument(0))
	if err != nil {
		return GetFromResAndErr(false, err, _this.runtime)
	}
	dateTime, err := GetUInt64FromArgument(call.Argument(0))
	if err != nil {
		return GetFromResAndErr(false, err, _this.runtime)
	}
	res, err := _this.hisdbOperator.Write(tag, dateTime, value)
	return GetFromResAndErr(res, err, _this.runtime)
}
